// *击鼓传花
class Queue {
  constructor() {
    this.items = [];
  }

  // 1.将元素加入到队列中
  enqueue(element) {
    this.items.push(element);
  }

  // 2.从队列中删除前端元素
  dequeue() {
    return this.items.shift();
  }

  // 3.查看队列前端元素
  front() {
    return this.items[0];
  }

  // 4.查看队列是否为空
  isEmpty() {
    return this.items.length === 0;
  }

  // 5.查看队列中元素的个数
  size() {
    return this.items.length;
  }

  // 6.toString()方法
  toString() {
    let resultString = '';
    for (let item of this.items) {
      resultString += item + ' ';
    }
    return resultString.trim();
  }
}

//  *封装击鼓传花游戏结果函数
function passGame(nameList, number) {
  // 1.创建一个队列结构
  let queue = new Queue();
  //   2.将所有人加入到队列
  for (let i = 0; i < nameList.length; i++) {
    queue.enqueue(nameList[i]);
  }
  /*  3.开始数数字,不是number时重新加入到队列末尾
        如果是number数字,将其从队列中删除     
*/

  // 3.3 剩一个人不删除
  while (queue.size() > 1) {
    //   3.1 number数字之前的人重新放到队列的末尾
    for (let i = 0; i < number - 1; i++) {
      queue.enqueue(queue.dequeue());
    }
    //   3.2 number对应的这个人,直接从队列中删除掉
    queue.dequeue();
  }

  //   4.获取剩下的那个人
  let winName = queue.front();
  console.log('赢家', winName);

  return nameList.indexOf(winName);
}

nameList = ['seele', 'elysia', 'walter', 'cool'];
passGame(nameList, 5);
